using Microsoft.Ccr.Core;
using Microsoft.Dss.Core.Attributes;
using Microsoft.Dss.ServiceModel.Dssp;
using W3C.Soap;
using Microsoft.Robotics.Services.WebCamSensor;
using Microsoft.Robotics.Services.DepthCamSensor;

namespace KinectCamRecorder
{
    public sealed class Contract
    {
        [DataMember]
        public const string Identifier = "http://schemas.tempuri.org/2011/07/kinectcamrecorder.html";
    }

    [DataContract]
    public class KinectCamRecorderState
    {
    }

    [ServicePort]
    public class KinectCamRecorderOperations : PortSet<DsspDefaultLookup, DsspDefaultDrop, AddFrame, AddWebCamFrame, AddDepthCamFrame>
    {
    }

    [DataContract]
    public class Frame
    {
        [DataMember]
        public WebCamSensorState WebCamFrame { get; set; }

        [DataMember]
        public DepthCamSensorState DepthCamFrame { get; set; }
    }

    public class AddFrame : Update<Frame, PortSet<DefaultUpdateResponseType, Fault>>
    {
        public AddFrame()
        {
        }

        public AddFrame(Frame body)
        : base(body)
        {
        }
    }

    public class AddWebCamFrame : Update<WebCamSensorState, PortSet<DefaultUpdateResponseType, Fault>>
    {
        public AddWebCamFrame()
        {
        }

        public AddWebCamFrame(WebCamSensorState body)
        : base(body)
        {
        }
    }

    public class AddDepthCamFrame : Update<DepthCamSensorState, PortSet<DefaultUpdateResponseType, Fault>>
    {
        public AddDepthCamFrame()
        {
        }

        public AddDepthCamFrame(DepthCamSensorState body)
        : base(body)
        {
        }
    }
}